// 0. 获取页面上的表单和输入元素
let form = document.querySelector('form'); // 获取表单元素
let nameInp = document.querySelector('.username'); // 获取用户名输入框
let ageInp = document.querySelector('.age'); // 获取年龄输入框
let genderSel = document.querySelector('.gender'); // 获取性别选择器
let nickInp = document.querySelector('.nickname'); // 获取昵称输入框

// 定义并立即执行异步函数fn
fn()
async function fn() {
    // 1. 用户是否已登录校验
    let { status, info, id } = await isLogin(); // 异步获取登录状态和用户信息
    if (status != 1) { // 如果用户未登录
        location.href = './login.html'; // 重定向到登录页面
        return; // 终止函数执行
    }

    // 2. 将用户信息渲染到页面中
    nameInp.value = info.username; // 设置用户名输入框的值为用户用户名
    ageInp.value = info.age; // 设置年龄输入框的值为用户年龄
    nickInp.value = info.nickname; // 设置昵称输入框的值为用户昵称
    genderSel.value = info.gender; // 设置性别选择器的值为用户性别

    // 3. 绑定表单提交事件
    form.addEventListener('submit', async e => {
        e.preventDefault(); // 阻止表单的默认提交行为

        // 4. 请求携带的数据
        let data = { id }; // 创建一个包含用户ID的数据对象

        // 5. 数据添加不为空的时候才加入到请求携带数据对象中
        if (ageInp.value) data.age = ageInp.value; // 如果年龄输入框有值，则添加到数据对象中
        if (genderSel.value) data.gender = genderSel.value; // 如果性别选择器有值，则添加到数据对象中
        if (nickInp.value) data.nickname = nickInp.value; // 如果昵称输入框有值，则添加到数据对象中

        // 6. 发起HTTP POST请求，更新用户信息
        let r = await http.post('/users/update', data); // 发起请求并等待响应
        if (r.data.code != 1) return alert('修改失败！请重试'); // 如果响应码不为1，提示修改失败

        // 7. 提示修改成功
        alert('修改成功'); // 如果响应码为1，提示修改成功
    });
}